package com.bolt.admin.module.email.dto.converter;

import com.bolt.admin.module.email.dto.EmailConfigDTO;
import com.bolt.admin.module.email.entity.EmailConfigEntity;

import java.util.List;
import java.util.Objects;
import java.util.stream.Collectors;

/**
 * Created by Administrator on 2018/11/27.
 */
public class EmailConfigConverter {
    private EmailConfigConverter() {
// do nothing
    }

    /**
     * Entity对象转换为DTO对象
     *
     * @param config DO对象
     * @return DTO对象
     */
    public static EmailConfigDTO toDTO(EmailConfigEntity config) {
        if (Objects.isNull(config)) {
            return null;
        }
        EmailConfigDTO result = new EmailConfigDTO();
        result.setId(config.getId());
        result.setFromUser(config.getFromUser());
        result.setHost(config.getHost());
        result.setPass(config.getPass());
        result.setPort(config.getPort());
        result.setEmailUser(config.getEmailUser());
        result.setGlobal(config.getGlobal());
        result.setVersionNO(config.getVersionNO());
        // TODO
        return result;
    }

    /**
     * DTO对象转换为Entity对象
     *
     * @param config DO对象
     * @return VO对象
     */
    public static EmailConfigEntity toEntity(EmailConfigDTO config) {
        if (Objects.isNull(config)) {
            return null;
        }
        EmailConfigEntity result = new EmailConfigEntity();
        result.setId(config.getId());
        result.setFromUser(config.getFromUser());
        result.setHost(config.getHost());
        result.setPass(config.getPass());
        result.setPort(config.getPort());
        result.setEmailUser(config.getEmailUser());
        result.setGlobal(config.getGlobal());
        result.setVersionNO(config.getVersionNO());
        // TODO
        return result;
    }

    /**
     * DTO对象转换为DO对象
     *
     * @param config DO对象
     * @return VO对象
     */
    public static EmailConfigEntity toEntity(EmailConfigEntity result, EmailConfigDTO config) {
        if (Objects.isNull(config)) {
            return null;
        }

        result.setFromUser(config.getFromUser());
        result.setHost(config.getHost());
        result.setPass(config.getPass());
        result.setPort(config.getPort());
        result.setEmailUser(config.getEmailUser());
        result.setGlobal(config.getGlobal());
// TODO
        return result;
    }

    /**
     * 批量 Entity对象转换为DTO对象
     *
     * @param configList Entity集合对象
     * @return DTO对象
     */
    public static List <EmailConfigDTO> toDTO(List <EmailConfigEntity> configList) {
        if (Objects.isNull(configList)) {
            return null;
        }
        return configList.stream().map(EmailConfigConverter::toDTO).collect(Collectors.toList());
    }

}
